"""
为窗口添加信号
"""

# 为窗口添加信号，本质上是为一个类添加信号，这里的类就是指窗口类
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys


class WinSignal(QWidget):
    button_clicked_signal = pyqtSignal()

    def __init__(self):
        super().__init__()
        self.setWindowTitle("为窗口添加信号")     # 设置窗口标题
        self.resize(300, 100)                   # 改变窗口大小

        btn = QPushButton('关闭窗口', self)      # 创建一个（关闭窗口的按钮）

        btn.clicked.connect(self.btn_clicked)   # 将按钮的点击信号和槽相关联起来

        self.button_clicked_signal.connect(self.btn_close)

    # 下面定义按钮点击的函数（槽）
    def btn_clicked(self):
        # 当按钮被点击时，会触发生成一个按钮点击信号，而按钮的点击信号会触发关闭窗口的槽函数
        self.button_clicked_signal.emit()

    def btn_close(self):
        self.close()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = WinSignal()
    window.show()
    sys.exit(app.exec_())

# 小结一下思路：
#           按钮点击事件 -> 会触发自定义的信号（绑定到自带的窗口关闭的槽函数）-> 进而关闭窗口槽函数

